package controllers;

import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.util.List;

import models.*;
import play.Logger;
import play.db.DB;
import play.db.jpa.JPA;
import play.mvc.*;

public class Chamados extends Controller {
 	
    	public static void getChamados(String filtro) {
		 	
   		 Logger.info("Metodo getChamados foi ativado!");

   		 List<Chamado> chamados = Chamado.all().fetch(20);

   		 	 
   	     render(chamados);
   	 	}
    	public static Pessoa getPessoaCorrente() {
    		//session.get("usuario");
    		Pessoa pessoa = (Pessoa) Pessoa.find("nome",session.get("usuario")).fetch(1).get(0);
    		return pessoa;
    	}
    	
    	public static void getChamadosSolucionados(String filtro){
    		Logger.info("Método getChamadosSolucionados foi chamado");
   		 	javax.persistence.Query query = JPA.em().createQuery("select id,assunto,descricao,dataAbertura from Chamado where status = 'Solucionado'");
   		 	query.setMaxResults(11);
		    List<Chamado> chamadosSolucionados = query.getResultList();
		 //List<Pessoa> pessoas = Pessoa.find("select TOP 10 p.id, p.nome from Pessoa p where p.nome like '%" + termoBusca +"%'").fetch(); 
		    render(chamadosSolucionados);
    	}
    	
    	
    	
    	public static void getChamadosAbertos(String filtro){
    		Logger.info("Método getChamadosAbertos foi chamado");
   		 	javax.persistence.Query query = JPA.em().createQuery("select id,assunto,descricao,dataAbertura from Chamado where status = 'Aberto'");
   		 	query.setMaxResults(11);
		    List<Chamado> chamadosAbertos = query.getResultList();
		 //List<Pessoa> pessoas = Pessoa.find("select TOP 10 p.id, p.nome from Pessoa p where p.nome like '%" + termoBusca +"%'").fetch(); 
		    render(chamadosAbertos);
    	}
    	
     	public static void getChamadosAtendidos(String filtro){
    		Logger.info("Método getChamadosAtendidos foi chamado");
   		 	javax.persistence.Query query = JPA.em().createQuery("select id,assunto,descricao,dataAbertura from Chamado where status = 'Recebido'");
   		 	query.setMaxResults(11);
		    List<Chamado> chamadosAtendidos= query.getResultList();
		 //List<Pessoa> pessoas = Pessoa.find("select TOP 10 p.id, p.nome from Pessoa p where p.nome like '%" + termoBusca +"%'").fetch(); 
		    render(chamadosAtendidos);
    	}
    	public static void getChamadosFinalizados(String filtro){
    		Logger.info("Método getChamadosAtendidos foi chamado");
   		 	javax.persistence.Query query = JPA.em().createQuery("select id,assunto,descricao,dataAbertura from Chamado where status = 'Finalizado'");
   		 	query.setMaxResults(11);
		    List<Chamado> chamadosFinalizados= query.getResultList();
		 //List<Pessoa> pessoas = Pessoa.find("select TOP 10 p.id, p.nome from Pessoa p where p.nome like '%" + termoBusca +"%'").fetch(); 
		    render(chamadosFinalizados);
    	}

    	public static void getFormularioCadastro(String filtro) {
		 	
   		 Logger.info("Metodo FormularioCadastro foi ativado!");
   		 
   		 List<TipoProblema> tiposProblema = TipoProblema.findAll();
   		 
   		
   	     render(tiposProblema);
   	 	}
    	public static void cadastrarSolucao(String idChamado, String solucao) {
    		//Pessoa pessoaCorrente = getPessoaCorrente();
    		long idC = (long) Integer.parseInt(idChamado);
    		Chamado chamado = Chamado.findById(idC);
    		chamado.status = "Solucionado";
    		chamado.solucao = solucao;
    		chamado.save();
    		render();
    		
    	}
    	public static void atenderChamado(String idChamado) {
    		Pessoa pessoaCorrente = getPessoaCorrente();
    		long idC = (long) Integer.parseInt(idChamado);
    		Chamado chamado = Chamado.findById(idC);
    		chamado.status = "Recebido";
    		chamado.atendente = pessoaCorrente;
    		chamado.save();
    		render();
    		
    	}
    	
    	public static void abrirChamado(String tipoProblemas, String assunto, String descricao){
    		long idTp = (long) Integer.parseInt(tipoProblemas);
    		TipoProblema tipoProblema = TipoProblema.findById(idTp);
    		
    		GregorianCalendar calendar = new GregorianCalendar();  
    		java.util.Date data = calendar.getTime();  
    		String status = "Aberto";
    		Pessoa pessoaCorrente = getPessoaCorrente();
    		
    		Chamado chamado = new Chamado(assunto, descricao, data, null, null, status, tipoProblema, null, pessoaCorrente, null,null);
    		
    		chamado.save();
    		
    		render(chamado);
    	
    	}
    	
    	public static void getChamado(String idChamado){
    		long idC = (long) Integer.parseInt(idChamado);
    		Chamado chamado = Chamado.findById(idC);
    		Pessoa pessoaCorrente = getPessoaCorrente();
    		render(chamado, pessoaCorrente );
    		
    	}
    	  	
    	
   	 
}
